<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="./js/vue.js"></script>
    <div class="box">
        <input type="text" v-model="firstName"><br>
        <input type="text" v-model="lastName"><br>
        <input type="text" v-model="fullName"><br>
        <input type="text" v-model="obj">
        <hr/>
        <input type="text" v-model="fullName1"><br>
        <input type="text" v-model="obj.age">
    </div>
    <script>
        // watch 监听data中的数据
        let vm=new Vue({
            el:'.box',
            data:{
                firstName:'sun',
                lastName:'wukong',
                fullName:'sun-wukong',
                fullName1:'sun-wukong',
                obj:{
                    name:'jack',
                    age:10
                },
                obj1:{
                    name:'rose',
                    age:17
                }
            },
            watch:{
                // 当监视的属性值发生变化 监听的回调中就能收到其最新值
                firstName(value){
                    console.log(value);
                    this.fullName=value+'-'+this.lastName
                },
                lastName(value){
                    this.fullName=this.firstName+'-'+value
                },
                fullName(value){
                    let arr=value.split('-');
                    this.firstName=arr[0];
                    this.lastName=arr[1];
                },
                // 当监听引用数据类型时使用深度监视
                obj:{
                    handler(value){ //handler这个属性名不能随意改
                        console.log(value)
                    },
                    deep:true, //深度监视
                    immediate:true  //立即执行
                }
            }
        })
        // console.log(vm);
        vm.$watch('fullName1',(newValue,oldValue)=>{
            // 监听对象或者数组（引用数据类型时，newValue和oldValue是相同的）
            console.log(newValue,oldValue);
        },{
            deep:true,//深度监视
            immediate:true //立即执行
        })
    </script>
</body>
</html>